package com.gm.baseplatform.base.cfg;

import java.util.ArrayList;
import java.util.List;

import com.gm.baseplatform.core.utils.ObjectUtil;

public class Configuration implements IConfiguration {

	private String unid;
	private String title;
	private String name;
	private String value;
	private String comment;
	
	public String getUnid() {
		return unid;
	}
	public void setUnid(String unid) {
		this.unid = unid;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}
	public String getComment() {
		return comment;
	}
	public void setComment(String comment) {
		this.comment = comment;
	}
	
	private ConfigDao configDao;
	public void setConfigDao(ConfigDao configDao) {
		this.configDao = configDao;
	}

	
	public boolean isInit() {
		Configuration cfg = getConfigByName(ConfigConstant.CFG_FLAG);
		return ObjectUtil.isNotNull(cfg);
	}
	
	
	public void init() {
		
		List<Configuration> cfgs = new ArrayList<Configuration>();
		
		Configuration cfg = new Configuration();
		cfg.setTitle(ConfigConstant.CFG_TITLE);
		cfg.setName(ConfigConstant.CFG_FLAG);
		cfg.setValue(ConfigConstant.CFG_OK);
		cfg.setComment(ConfigConstant.CFG_COMMENT);
		cfgs.add(cfg);
		
		Configuration cfgModule = new Configuration();
		cfgModule.setTitle(ConfigConstant.CFG_TITLE_INIT_MODULE);
		cfgModule.setName(ConfigConstant.CFG_FLAG_INIT_MODULE);
		cfgModule.setValue(ConfigConstant.CFG_INIT_MODULE_DEFAULT);
		cfgModule.setComment(ConfigConstant.CFG_COMMENT_INIT_MODULE);
		cfgs.add(cfgModule);
	
		addConfig(cfgs);
	}
	
	
	public void addConfig(Configuration cfg) {
		
		if (ObjectUtil.isNull(cfg)) {
			return;
		}
		configDao.saveConfig(cfg);
	}

	
	public void addConfig(List<Configuration> cfgs) {
		
		if (ObjectUtil.isNull(cfgs) || cfgs.isEmpty()) {
			return;
		}
		
		for (int i = 0; i < cfgs.size(); i++) {
			configDao.saveConfig(cfgs.get(i));
		}
	}

	
	public void updateConfig(Configuration cfg) {
		
		if (ObjectUtil.isNull(cfg)) {
			return;
		}
		
		configDao.updateConfig(cfg);
	}
	
	
	public Configuration getConfigByName(String name) {
	     return configDao.findConfigByName(name);
	}
	
	
	public List<?> loadConfigs() {
		return configDao.loadConfigs();
	}
	

}
